package collection;

import org.junit.Test;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

/**
 * @author : DuJiabao
 * @Date : 2021/1/18 20:08
 * @Project : java_learning
 * @File : null.java
 * @Desc :
 */
public class MapTest {
    /**
     * Map的key用Set存储，value用Collection存储
     */
    @Test
    public void mapTest() {
        Map<String, Integer> map = new HashMap<>();
//        添加元素
        map.put("John", 12);
//        将一个map所有元素添加到另一个map上
        HashMap<String, Integer> map2 = new HashMap<>();
        map2.put("Amy", 20);
        map.putAll(map2);
        System.out.println(map);
//        删除指定key的元素,返回该value
        Integer john = map.remove("John");
        System.out.println(john);
//        清空map
        map.clear();
        System.out.println(map);
//        查询指定key的value值
        System.out.println(map2.get("Amy"));
//        查询该map是否存在指定的key
        System.out.println(map2.containsKey("Amy"));
//        查询该map是否存在指定的value
        System.out.println(map2.containsValue(12));
//        查询该map的大小
        System.out.println(map2.size());
//        查询该map是否为空
        System.out.println(map2.isEmpty());
//        比较两个map之间是否相等
        map.put("Amy", 20);
        System.out.println(map.equals(map2));
//      由所有key构成的set
        map.put("John", 12);
        System.out.println(map.keySet());
//        由所有value构成的Collection
        System.out.println(map.values());
//        所有key-value对构成的Set集合，元素以实现了Map.Entry接口
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for (Map.Entry<String, Integer> next : entries) {
            String key = next.getKey();
            Integer value = next.getValue();
            System.out.println(key + " " + value);
        }
//      null也可以作为key
        map.put(null, 10);
        System.out.println(map.get(null));
    }

    @Test
    public void propertiesTest() {
        Properties pros = new Properties();
        FileInputStream fis = null;
        try {
            fis = new FileInputStream("./src/classes/collection/config.properties");
            pros.load(fis);
            System.out.println(pros.getProperty("name"));
            System.out.println(pros.getProperty("age"));
            System.out.println(pros.getProperty("address"));
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}











